/******************************************************************************
 * Copyright (C) 2014 ShenZhen YiHua Computer Co., Ltd.
 * All Rights Reserved.
 * 本软件为深圳怡化电脑股份有限公司开发研制。未经本公司正式书面同意，其他任何个人、团体
 * 不得使用、复制、修改或发布本软件.
 *****************************************************************************/
package net.dgg.dggcloud.core.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
 * @ClassName RWProperties
 * @Description 获取properties操作类
 * @author 余松
 * @date  2014年10月15日 下午4:51:32 
 */
public class RWProperties {
    private static Properties property = new Properties();
    
    static Logger logger = Logger.getLogger(RWProperties.class);
    
    private RWProperties(){};
    /**
     * 通过属性配置文件的Key值获得相应的Value值
     * @param key 属性配制文件的Key值
     * @param propertyFilePath 属性配制文件的完整路径，如：
     * "com/test/config/database.properties"
     * @return Key值所对应的Value值
     */
    public static String getProperty(String key,String propertyFilePath){
        String value = null;        
        InputStream is = null;
        try {
            is = new FileInputStream(new File(propertyFilePath));
            property.load(is);
            value = property.getProperty(key);
        } catch (Exception e) {
        	logger.error("获取属性文件的值出错",e);
        }finally{
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                is = null;
            }
        }
        
        return value;
    }
    
    /**
     * 修改属性配置文件
     * @param key 属性配制文件的Key值
     * @param value 属性配制文件的value值
     * @param propertyFilePath 属性配制文件的完整路径
     * @return 如果属性文件修改成功返回true，失败则返回false
     */
    public static boolean setProperty(String key,String value,String propertyFilePath){
        FileOutputStream fos = null;
        boolean flag = false;
        try {
            String filePath = RWProperties.class.getClassLoader().getResource(propertyFilePath).getFile();
            filePath = filePath.replaceFirst("/", "");
            // 如果URL地址中含有空格，则空格会被"%20"替换，所以要将它替换回来
            filePath = filePath.replaceAll("%20", " ");
            fos = new FileOutputStream(filePath);
            String str = (String)property.setProperty(key, value);
            property.store(fos, str);
            flag = true;
        } catch (Exception e) {
        	logger.error("修改属性文件出错",e);
        }  finally {
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                fos = null;
            }
        }
        return flag;
    }
    
    public static String readPropertiesValue(String key){
    	// 读取配置文件
    	InputStream is = null;
    	String name = "";
    	try
    	{
    		is = FileUtil.class.getResourceAsStream("/modelpath.properties");
			property.load(is);
		}
		catch (Exception e)
		{
			logger.error("获取属性文件的值出错",e);
		}finally{
			if(null != is){
				try
				{
					is.close();
				}
				catch (IOException e)
				{
					logger.error("流关闭异常",e);
				}
			}
		}
        // 根据key 取出配置的value
    	 
        try {
        	name = new String(property.getProperty(key).getBytes("ISO-8859-1"),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			logger.error("获取属性文件的值出错",e);
		} 
        return name;
    }
}
